import router from './router'
// import store from './store'
import NProgress from 'nprogress' // progress bar
import '@/components/NProgress/nprogress.less' // progress bar custom style
// import notification from 'ant-design-vue/es/notification'
import { setDocumentTitle, domTitle } from '@/utils/domUtil'
// import { ACCESS_TOKEN } from '@/store/mutation-types'

NProgress.configure({ showSpinner: false }) // NProgress Configuration

const whiteList = [] // no redirect whitelist

router.beforeEach((to, from, next) => {
  NProgress.start() // start progress bar
  to.meta && (typeof to.meta.title !== 'undefined' && setDocumentTitle(`${to.meta.title} - ${domTitle}`))
  /* has token */
  if (whiteList.includes(to.name)) {
    next() // 白名单免登陆
  } else {
    next()
    // if (store.getters.userInfo) {
    //   next() // vuex存在用户信息
    // } else {
    //   // request login userInfo
    //   store
    //     .dispatch('GetUserInfo')
    //     .then(userInfo => {
    //       // generate dynamic router
    //       store.dispatch('GenerateRoutes', userInfo).then(() => {
    //         // 根据roles权限生成可访问的路由表
    //         // 动态添加可访问路由表
    //         router.addRoutes(store.getters.addRouters)

    //         // 请求带有 redirect 重定向时，登录自动重定向到该地址
    //         const redirect = decodeURIComponent(from.query.redirect || to.path)
    //         if (to.path === redirect) {
    //           // set the replace: true so the navigation will not leave a history record
    //           next({ ...to, replace: true })
    //         } else {
    //           // 跳转到目的路由
    //           next({ path: redirect })
    //         }
    //       })
    //     })
    //     .catch(() => {
    //       notification.error({
    //         message: '错误',
    //         description: '请求用户信息失败，请重试'
    //       })
    //       // 失败时，获取用户信息失败时，调用登出，来清空历史保留信息
    //       store.dispatch('Logout').then(() => {
    //         window.location.href = `${process.env.VUE_APP_LOGIN_DOMAIN}?appId=${process.env.VUE_APP_ID}`
    //       })
    //     })
    // }
  }
})

router.afterEach(() => {
  NProgress.done() // finish progress bar
})
